home *** CD-ROM | disk | FTP | other *** search
/ By Popular Request 2.0 / By Popular Request 2.0 (Arsenal Computer).ISO / amiga_3 / ezbbs221.lha / Source / mail2eazy.c < prev    next >
C/C++ Source or Header  |  1995-04-12  |  3KB  |  162 lines

  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <time.h>
  6. #include <proto/dos.h>
  7. #include <proto/exec.h>
  8.  
  9.  
  10.  
  11. #define VERSION "1.4"
  12. static char *version = "\0$VER: mail2eazy " VERSION " " __AMIGADATE__ "";
  13. static char allargs[1024];
  14.  
  15.  
  16.  
  17. void space2under(char *s)
  18. {
  19.     while (s && *s) {
  20.         if (*s == ' ')
  21.             *s = '_';
  22.         s++;
  23.     }
  24. }
  25.  
  26.  
  27.  
  28. void kill_quotes(char *s)
  29. {
  30.     while (s && *s) {
  31.         if (*s == '\"')
  32.             *s = '\'';
  33.         s++;
  34.     }
  35. }
  36.  
  37.  
  38.  
  39. char *DOS_escape(char *str)
  40. /* put * (escape char) before " and * */
  41. {
  42.     if (str) {
  43.         char *s = str;
  44.         while (*s) {
  45.             if (*s == '"' || *s == '*') {
  46.                 strins(s, "*");
  47.                 s++;
  48.             }
  49.             s++;
  50.         }
  51.         /* strins(str,"\""); */
  52.         /* strcat(str,"\""); */
  53.     }
  54.     return (str);
  55. }
  56.  
  57.  
  58.  
  59. int main(int argc, char *argv[])
  60. {
  61.     int i=1;
  62.  
  63.     strcpy(allargs,"");
  64.     while (i < argc) {
  65.         strcat(allargs,argv[i]);
  66.         if (++i < argc)
  67.             strcat(allargs," ");
  68.     }
  69.  
  70.     if (argc > 1) {
  71.         char tmp[80];
  72.         FILE *fp;
  73.  
  74.         sprintf(tmp, "%s%ld", "MB_TMP:Mail2Eazy.tmp", (long) FindTask(NULL));
  75.  
  76.         if (fp = fopen(tmp, "w")) {
  77.             register int c = 0;
  78.             char username[256];
  79.             char uucpadr[256];
  80.             char *to_user = allargs;
  81.             char subject[256];
  82.             char exec[256];
  83.             char str[1024];
  84.             BOOL ende = FALSE;
  85.  
  86.             strcpy(username, "unknown");
  87.             strcpy(subject, "none");
  88.             strcpy(uucpadr, "");
  89.  
  90.             while (!ende && fgets(str, 1023, stdin)) {
  91.                 if (strlen(str) == 0 || strcmp(str, "\n") == 0)
  92.                     ende = TRUE;
  93.                 else if ((strnicmp(str, "From: ", 6) == 0 && strlen(uucpadr) == 0) || strnicmp(str, "Reply-To: ", 10) == 0) {
  94.                     char *p;
  95.                     char *str2;
  96.                     str2 = strstr(str, ": ") + 2;
  97.  
  98.                     strcpy(uucpadr, str2);
  99.                     kill_quotes(uucpadr);
  100.                     if (strchr(uucpadr, '\n'))
  101.                         *strchr(uucpadr, '\n') = 0;
  102.  
  103. #if 0
  104.                     strcpy(username, str2);
  105.                     p = username;
  106.                     while (*p && *p != '@') {
  107.                         p++;
  108.                     }
  109.                     if (*p == '@')
  110.                         *p = 0;
  111. #endif
  112.                     if (p = strchr(str2, '@')) {
  113.                         int pos;
  114.                         for (pos = 0, p--; p >= str2 && *p != ' ' && *p != '\t' && *p != '<'; p--)
  115.                             username[pos++] = *p;
  116.                         username[pos] = 0;
  117.                         strrev(username);
  118.                     }
  119.  
  120.                     if (strchr(username, '\n'))
  121.                         *strchr(username, '\n') = 0;
  122.                     username[15] = 0;
  123.                     kill_quotes(username);
  124.                 }
  125.                 else if (strncmp(str, "Subject: ", 9) == 0) {
  126.                     strcpy(subject, str + 9);
  127.                     kill_quotes(subject);
  128.                     if (strchr(subject, '\n'))
  129.                         *strchr(subject, '\n') = 0;
  130.                     subject[40] = 0;
  131.                 }
  132.             }
  133.  
  134.             while ((c = fgetc(stdin)) != EOF) {
  135.                 if (c == '\\')
  136.                     fputc('\\', fp);
  137.                 fputc(c, fp);
  138.             }
  139.             fprintf(fp, "\n");
  140.  
  141.             fclose(fp);
  142.  
  143. #if 0
  144.             DOS_escape(username);
  145.             DOS_escape(to_user);
  146.             DOS_escape(uucpadr);
  147.             DOS_escape(subject);
  148. #endif
  149.  
  150.             sprintf(exec, "MB:C/ImportMail \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"", username, to_user, uucpadr, subject, tmp);
  151.             System(exec, NULL);
  152.             DeleteFile(tmp);
  153.         }
  154.     }
  155.     else {
  156.         fprintf(stderr, "\033[1;33mEazyBBS\033[0m ⌐ 1988-1995 Andreas M. Kirchwitz\n"
  157.             "Usage: mail2eazy \033[3m<to> \033[0m <text\n");
  158.     }
  159.  
  160.     exit(0);
  161. }
  162.